package cn.tedu.straw.search.vo;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
//@Document ：通过 indexName 属性，配置当前类型对应ElasticSearch服务器中的哪个索
//引，后续的编程中，ElasticSearch的API会自动找到对应的索引来处理数据，甚至当索引不
//存在时还会自动创建索引；
@Document(indexName = "question")
public class QuestionSearchVO implements Serializable {
    //@Id 用于将属性对应ElasticSearch的文档ID；
    @Id
    private Integer id;
    //@Field ：用于配置普通属性，应该指定注解参数 type 的值，其中， FieldType.Keyword
    //表示“关键字”，则该属性值是不会被分词的，例如某用户的 userNickName 的值是 "天下第
    //一" ，则不会拆为 "天下" 和 "第一" 这2个词，同时，通过 "天下" 或 "第一" 也就找不到这
    //个用户昵称了！而 FieldType.Text 表示“普通文本”，是可以分词的，需要通过 analyzer
    //指定分词器，通过 searchAnalyzer 指定查询分词器。
    @Field(type = FieldType.Text, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
    private String title;
    @Field(type = FieldType.Text, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
    private String content;
    @Field(type = FieldType.Integer)
    private Integer userId;
    @Field(type = FieldType.Keyword)
    private String userNickName;

}
